<?php
include_once('include/Config.php');
include_once('entities/SolicitudFull.php');

Class SolicitudDAL {

    private $link;
    
    public $result;
    public $errorDesc;


    public function __construct() {
        $this->conectar();
    }

    private function conectar() {
        
        //Tomado del config.php
        $this->link = $GLOBALS["DBConnPDO"];
        
    }

    public function obtenerSolicitudFull() {
        //$sql = "select e.RazonSocial,s.numSolicitud,s.FechaSolicitud,s.MontoPoliza,s.MontoPago,concat(c.nombre,' ' ,c.Apellido)as nomapel,u.NombreApellido,s.isActivo,s.isCobrado,s.isBorrado from solicitud s inner join usuario u on s.idUsuario = u.idUsuario inner join cliente c on c.idCliente = s.idCliente inner join empresa e on e.idEmpresa = s.idEmpresa";        
        $sql = "select s.idEmpresa as 'idEmpresaSolicitud', s.numSolicitud, s.FechaSolicitud, s.MontoPoliza, s.MontoPago, s.idCliente as 'idClienteSolicitud', s.idUsuario, s.isActivo as 'isActivoSolicitud', ";
        $sql = $sql . "s.isCobrado, s.isBorrado as 'isBorradoSolicitud', c.idCliente, c.Nombre, c.Apellido, c.FechaNacimiento, c.idTipoDocumento, c.NumeroDocumento, c.Sexo, ";
        $sql = $sql . "c.Email, c.Email2, c.Calle, c.Numero, c.Piso, c.Depto, c.Telefono, c.Telefono2, c.idLocalidad, c.idTipoActividad, c.idTipoEstadoCivil, ";
        $sql = $sql . "c.idProvincia, c.CodigoPostal, c.CodigoPostalManual, e.NickName, e.idEmpresa, ";
        $sql = $sql . "ct.idClienteTarjeta, ct.NumeroTarjeta, ct.CodVerificacion, ct.VencimientoTarjeta ";
        $sql = $sql . "from solicitud s inner join usuario u on s.idUsuario = u.idUsuario inner join cliente c on c.idCliente = s.idCliente inner join empresa e on e.idEmpresa = s.idEmpresa inner join clientetarjeta ct on ct.idCliente = c.idCliente inner join tipotarjeta tt on tt.idTipoTarjeta = ct.idTipoTarjeta inner join localidad l on l.idLocalidad = c.idCliente inner join provincia p on p.idProvincia = c.idCliente";
        $listaSolicitud = array();

        foreach ($this->link->query($sql) as $row) {

            $sol = new SolicitudFull();
            
            $sol->setIdEmpresaSolicitud($row['idEmpresaSolicitud']);
            $sol->setNumSolicitud($row['numSolicitud']);
            $sol->setFechaSolicitud($row['FechaSolicitud']);
            $sol->setMontoPoliza($row['MontoPoliza']);
            $sol->setMontoPago($row['MontoPago']);
            $sol->setIdClienteSolicitud($row['idClienteSolicitud']);
            $sol->setIdUsuario($row['idUsuario']);
            $sol->setIsActivo($row['isActivoSolicitud']);
            $sol->setIsCobrado($row['isCobrado']);
            $sol->setIsBorrado($row['isBorradoSolicitud']);
            $sol->setIdCliente($row['idCliente']);
            $sol->setNombre($row['Nombre']);
            $sol->setApellido($row['Apellido']);
            $sol->setFechaNacimiento($row['FechaNacimiento']);
            $sol->setIdTipoDocumento($row['idTipoDocumento']);
            $sol->setNumeroDocumento($row['NumeroDocumento']);
            $sol->setSexo($row['Sexo']);
            $sol->setIdTipoEstadoCivil($row['idTipoEstadoCivil']);
            $sol->setEmail($row['Email']);
            $sol->setEmail2($row['Email2']);
            $sol->setCalle($row['Calle']);
            $sol->setNumero($row['Numero']);
            $sol->setPiso($row['Piso']);
            $sol->setDepto($row['Depto']);
            $sol->setTelefono($row['Telefono']);
            $sol->setTelefono2($row['Telefono2']);
            $sol->setIdLocalidad($row['idLocalidad']);
            $sol->setIdProvincia($row['idProvincia']);
            $sol->setCodigoPostal($row['CodigoPostal']);
            $sol->setCodigoPostalManual($row['CodigoPostalManual']);
            $sol->setIdTipoActividad($row['idTipoActividad']);
            //Empresa            
            $sol->setNickNameEmpresa($row['NickName']);
            $sol->setIdEmpresa($row['idEmpresa']);
            //cliente tarjeta
            $sol->setIdClienteTarjeta($row['idClienteTarjeta']);
            $sol->setNumeroTarjeta($row['NumeroTarjeta']);
            $sol->setCodVerificacion($row['CodVerificacion']);
            $sol->setVencimientoTarjeta($row['VencimientoTarjeta']);

            $listaSolicitud [] = $sol;
        }
        return $listaSolicitud;
    }

    public function obtenerSolicitudFullQuery($query) {
        //$sql = "select e.RazonSocial,s.numSolicitud,s.FechaSolicitud,s.MontoPoliza,s.MontoPago,concat(c.nombre,' ' ,c.Apellido)as nomapel,u.NombreApellido,s.isActivo,s.isCobrado,s.isBorrado from solicitud s inner join usuario u on s.idUsuario = u.idUsuario inner join cliente c on c.idCliente = s.idCliente inner join empresa e on e.idEmpresa = s.idEmpresa";        
        $sql = "
        	select s.idEmpresa as 'idEmpresaSolicitud', s.numSolicitud, s.FechaSolicitud, s.MontoPoliza, s.MontoPago, s.idCliente as 'idClienteSolicitud', s.idUsuario, 
                s.isActivo as 'isActivoSolicitud', s.isCobrado, s.isBorrado as 'isBorradoSolicitud',
                c.idCliente, c.Nombre, c.Apellido, c.FechaNacimiento, c.idTipoDocumento, c.NumeroDocumento, c.Sexo, c.Email, c.Email2, c.Calle, c.Numero, c.Piso, c.Depto, 
                c.Telefono, c.Telefono2, c.idLocalidad, c.idTipoActividad, c.idTipoEstadoCivil, c.idProvincia, c.CodigoPostal, c.CodigoPostalManual, 
                e.NickName, e.idEmpresa, 
                ct.idClienteTarjeta, ct.NumeroTarjeta, ct.CodVerificacion, ct.VencimientoTarjeta 
                from solicitud s
                inner join usuario u on s.idUsuario = u.idUsuario 
                inner join empresa e on e.idEmpresa = s.idEmpresa 
                inner join cliente c on c.idCliente = s.idCliente 
                inner join clientetarjeta ct on ct.idCliente = c.idCliente 
                inner join tipotarjeta tt on tt.idTipoTarjeta = ct.idTipoTarjeta 
          ";
                
                //Las saque porque jodian nomas
                
                //inner join provincia p on p.idProvincia = c.idProvincia 
                //inner join localidad l on l.idLocalidad = c.idLocalidad  and c.idProvincia = l.idProvincia 
                
        $sql .= $query;
				$sql .= " ORDER BY s.FechaSolicitud, s.idEmpresa, s.numSolicitud ";

				//echo "xonsulta ==>" . $sql;

        $listaSolicitud = array();

        foreach ($this->link->query($sql) as $row) {

            $sol = new SolicitudFull();
            $sol->setIdEmpresaSolicitud($row['idEmpresaSolicitud']);
            $sol->setNumSolicitud($row['numSolicitud']);
            $sol->setFechaSolicitud($row['FechaSolicitud']);
            $sol->setMontoPoliza($row['MontoPoliza']);
            $sol->setMontoPago($row['MontoPago']);
            $sol->setIdClienteSolicitud($row['idClienteSolicitud']);
            $sol->setIdUsuario($row['idUsuario']);
            $sol->setIsActivo($row['isActivoSolicitud']);
            $sol->setIsCobrado($row['isCobrado']);
            $sol->setIsBorrado($row['isBorradoSolicitud']);
            $sol->setIdCliente($row['idCliente']);
            $sol->setNombre($row['Nombre']);
            $sol->setApellido($row['Apellido']);
            $sol->setFechaNacimiento($row['FechaNacimiento']);
            $sol->setIdTipoDocumento($row['idTipoDocumento']);
            $sol->setNumeroDocumento($row['NumeroDocumento']);
            $sol->setSexo($row['Sexo']);
            $sol->setIdTipoEstadoCivil($row['idTipoEstadoCivil']);
            $sol->setEmail($row['Email']);
            $sol->setEmail2($row['Email2']);
            $sol->setCalle($row['Calle']);
            $sol->setNumero($row['Numero']);
            $sol->setPiso($row['Piso']);
            $sol->setDepto($row['Depto']);
            $sol->setTelefono($row['Telefono']);
            $sol->setTelefono2($row['Telefono2']);
            $sol->setIdLocalidad($row['idLocalidad']);
            $sol->setIdProvincia($row['idProvincia']);
            $sol->setCodigoPostal($row['CodigoPostal']);
            $sol->setCodigoPostalManual($row['CodigoPostalManual']);
            $sol->setIdTipoActividad($row['idTipoActividad']);
            //Empresa            
            $sol->setNickNameEmpresa($row['NickName']);
            $sol->setIdEmpresa($row['idEmpresa']);
            //cliente tarjeta
            $sol->setIdClienteTarjeta($row['idClienteTarjeta']);
            $sol->setNumeroTarjeta($row['NumeroTarjeta']);
            $sol->setCodVerificacion($row['CodVerificacion']);
            $sol->setVencimientoTarjeta($row['VencimientoTarjeta']);

            $listaSolicitud [] = $sol;
            //$listaSolicitud [] = $usuario;
        }
        return $listaSolicitud;
    }

    public function obtenerSolicitudModificacionFull($idEmp, $idSol, $idUsu) {
        //$sql = "select e.RazonSocial,s.numSolicitud,s.FechaSolicitud,s.MontoPoliza,s.MontoPago,concat(c.nombre,' ' ,c.Apellido)as nomapel,u.NombreApellido,s.isActivo,s.isCobrado,s.isBorrado from solicitud s inner join usuario u on s.idUsuario = u.idUsuario inner join cliente c on c.idCliente = s.idCliente inner join empresa e on e.idEmpresa = s.idEmpresa";        
        $sql = "select s.idEmpresa as 'idEmpresaSolicitud', s.numSolicitud, s.FechaSolicitud, s.MontoPoliza, s.MontoPago, s.idCliente as 'idClienteSolicitud', s.idUsuario, s.isActivo as 'isActivoSolicitud', ";
        $sql = $sql . "s.isCobrado, s.isBorrado as 'isBorradoSolicitud', c.idCliente, c.Nombre, c.Apellido, DATE_FORMAT(c.FechaNacimiento, '%d/%m/%Y') as 'FechaNacimiento', c.idTipoDocumento, c.NumeroDocumento, c.Sexo, ";
        $sql = $sql . "c.Email, c.Email2, c.Calle, c.Numero, c.Piso, c.Depto, c.Telefono, c.Telefono2, c.idLocalidad, c.idTipoActividad, c.idTipoEstadoCivil, ";
        $sql = $sql . "c.idProvincia, c.CodigoPostal, c.CodigoPostalManual, e.NickName, e.idEmpresa, ";
        $sql = $sql . "ct.idClienteTarjeta, ct.NumeroTarjeta, ct.CodVerificacion, ct.VencimientoTarjeta, ct.idTipoTarjeta, s.idProducto, s.isDeseaClarin  ";
        $sql = $sql . "from solicitud s inner join usuario u on s.idUsuario = u.idUsuario inner join cliente c on c.idCliente = s.idCliente inner join empresa e on e.idEmpresa = s.idEmpresa inner join clientetarjeta ct on ct.idCliente = c.idCliente ";
        $sql .= " where s.numSolicitud = :numSolicitud ";

        if ($idEmp != 0) {
            $sql .= "and s.idEmpresa = :idEmpresa "; //. " and s.idUsuario = :idUsuario ";
        }

        $listaSolicitud = array();

        $stmt = $this->link->prepare($sql);

        $stmt->bindParam(':numSolicitud', $idSol, PDO::PARAM_INT);

        if ($idEmp != 0) {
            $stmt->bindParam(':idEmpresa', $idEmp, PDO::PARAM_INT);
            //$stmt->bindParam(':idUsuario', $idUsu, PDO::PARAM_INT);
        }

        $stmt->execute();
        $result = $stmt->fetchAll();

        foreach ($result as $row) {

            $sol = new SolicitudFull();
            $sol->setIdEmpresaSolicitud($row['idEmpresaSolicitud']);
            $sol->setNumSolicitud($row['numSolicitud']);
            $sol->setFechaSolicitud($row['FechaSolicitud']);
            $sol->setMontoPoliza($row['MontoPoliza']);
            $sol->setMontoPago($row['MontoPago']);
            $sol->setIdClienteSolicitud($row['idClienteSolicitud']);
            $sol->setIdUsuario($row['idUsuario']);
            $sol->setIsActivo($row['isActivoSolicitud']);
            $sol->setIsCobrado($row['isCobrado']);
            $sol->setIsBorrado($row['isBorradoSolicitud']);
            $sol->setIdCliente($row['idCliente']);
            $sol->setNombre($row['Nombre']);
            $sol->setApellido($row['Apellido']);
            $sol->setFechaNacimiento($row['FechaNacimiento']);
            $sol->setIdTipoDocumento($row['idTipoDocumento']);
            $sol->setNumeroDocumento($row['NumeroDocumento']);
            $sol->setSexo($row['Sexo']);
            $sol->setIdTipoEstadoCivil($row['idTipoEstadoCivil']);
            $sol->setEmail($row['Email']);
            $sol->setEmail2($row['Email2']);
            $sol->setCalle($row['Calle']);
            $sol->setNumero($row['Numero']);
            $sol->setPiso($row['Piso']);
            $sol->setDepto($row['Depto']);
            $sol->setTelefono($row['Telefono']);
            $sol->setTelefono2($row['Telefono2']);
            $sol->setIdLocalidad($row['idLocalidad']);
            $sol->setIdProvincia($row['idProvincia']);
            $sol->setCodigoPostal($row['CodigoPostal']);
            $sol->setCodigoPostalManual($row['CodigoPostalManual']);
            $sol->setIdTipoActividad($row['idTipoActividad']);
            //Empresa            
            $sol->setNickNameEmpresa($row['NickName']);
            $sol->setIdEmpresa($row['idEmpresa']);
            //cliente tarjeta
            $sol->setIdClienteTarjeta($row['idClienteTarjeta']);
            $sol->setNumeroTarjeta($row['NumeroTarjeta']);
            $sol->setCodVerificacion($row['CodVerificacion']);
            $sol->setVencimientoTarjeta($row['VencimientoTarjeta']);
            $sol->setIdTipoTarjeta($row['idTipoTarjeta']);
            $sol->setIdProducto($row['idProducto']);
            
            $sol->setIsDeseaClarin($row['isDeseaClarin']);

            $listaSolicitud [] = $sol;
            //$listaSolicitud [] = $usuario;
        }
        return $listaSolicitud;
    }

    public function updateIsBorrado($solId) {

        try {
            $stmt = $this->link->prepare('UPDATE solicitud SET isborrado = :isBorrado WHERE numSolicitud = :idSolicitud;');
            $idSolicitud = $solId;
            $isBorrado = TRUE;
            $stmt->bindParam(':idSolicitud', $idSolicitud, PDO::PARAM_INT);
            $stmt->bindParam(':isBorrado', $isBorrado, PDO::PARAM_BOOL);
            $stmt->execute();
        } catch (PDOException $e) {
            echo $e->getMessage();
        }
    }

    public function modificarSolicitud($sol) {

        try {

            $sql = "UPDATE solicitud SET ";
            //$sql .= "fechaSolicitud = :fechaSolicitud, ";
            $sql .= "idProducto = :idProducto, ";
            $sql .= "MontoPoliza = :montoPoliza, ";
            $sql .= "MontoPago = :montoPago, ";
            $sql .= "isDeseaClarin = :isDeseaClarin, ";
            $sql .= "isCobrado = :isCobrado ";
            $sql .= "WHERE numSolicitud = :numSolicitud AND idEmpresa = :idEmpresa";

            $stmt = $this->link->prepare($sql);

            $fechaSolicitud = $sol->getFechaSolicitud();
            $idProducto = $sol->getIdProducto();
            $montoPoliza = $sol->getMontoPoliza();
            $montoPago = $sol->getMontoPago();
            $isDeseaClarin = $sol->getIsDeseaClarin();
            $isCobrado = $sol->getIsCobrado();
            $numSolcitud = $sol->getNumSolicitud();
            $idEmp = $sol->getIdEmpresa();

            $date = str_replace('/', '-', $fechaSolicitud);
            $fechaSolicitud = date("Y-m-d", strtotime($date));

            //$stmt->bindParam(':fechaSolicitud', $fechaSolicitud, PDO::PARAM_STR);
            $stmt->bindParam(':idProducto', $idProducto, PDO::PARAM_INT);
            $stmt->bindParam(':montoPoliza', $montoPoliza, PDO::PARAM_STR);
            $stmt->bindParam(':montoPago', $montoPago, PDO::PARAM_STR);
            $stmt->bindParam(':isCobrado', $isCobrado, PDO::PARAM_BOOL);
            $stmt->bindParam(':isDeseaClarin', $isDeseaClarin, PDO::PARAM_BOOL);
            $stmt->bindParam(':numSolicitud', $numSolcitud, PDO::PARAM_INT);
            $stmt->bindParam(':idEmpresa', $idEmp, PDO::PARAM_INT);

            $stmt->execute();
            $stmt->closeCursor();
            
            $this->result = 0;
            $this->errorDesc = "";
            return 1;            
        } catch (PDOException $e) {
            $this->result = -1;
            $this->errorDesc = $e->getMessage();
            return $this->result;
        }
    }

    public function ultimaSolicitud($idEmpresa) {
        $sql = "SELECT (MAX(numSolicitud) + 1) as 'ultimo' FROM solicitud WHERE idEmpresa = " . $idEmpresa . ";";

        $stmt = $this->link->prepare($sql);

        $stmt->execute();
        $result = $stmt->fetchColumn();
        
        return $result;
    }

    public function insertSolicitud($sol) {
        try {
            $sql = "INSERT INTO solicitud( ";
            $sql .= "idEmpresa ";
            $sql .= ",numSolicitud ";
            $sql .= ",FechaSolicitud ";
            $sql .= ",idProducto ";
            $sql .= ",MontoPoliza ";
            $sql .= ",MontoPago ";
            $sql .= ",isDeseaClarin ";
            $sql .= ",idCliente ";
            $sql .= ",idUsuario ";
            $sql .= ",isActivo ";
            $sql .= ",isCobrado ";
            $sql .= ",isBorrado ";
            $sql .= ") VALUES ( ";
            $sql .= ":idEmpresa ";
            $sql .= ",:numSolicitud ";
            $sql .= ",:fechaSolicitud ";
            $sql .= ",:idProducto ";
            $sql .= ",:MontoPoliza ";
            $sql .= ",:MontoPago ";
            $sql .= ",:isDeseaClarin ";
            $sql .= ",:idCliente ";
            $sql .= ",:idUsuario ";
            $sql .= ",:isActivo ";
            $sql .= ",:isCobrado ";
            $sql .= ",:isBorrado) ";

            $stmt = $this->link->prepare($sql);

            $idEmpresa = $sol->getIdEmpresa();
            $numSolicitud = $this->ultimaSolicitud($idEmpresa);
            $fechaSolicitud = $sol->getFechaSolicitud();
            $idProducto = $sol->getIdProducto();
            $montoPoliza = $sol->getMontoPoliza();
            $montoPago = $sol->getMontoPago();
            $idCliente = $sol->getIdCliente();
            $idUsuario = $sol->getIdUsuario();
            $isDeseaClarin = $sol->getIsDeseaClarin();
            $isCobrado = $sol->getIsCobrado();
            $isActivo = TRUE;
            $isBorrado = FALSE;

            /*
            $date = str_replace('/', '-', $fechaSolicitud);
            $fechaSolicitud = date("Y-m-d", strtotime($date));
            echo "Ingresa fechaSolicitud-->" . $fechaSolicitud;
            */
            
            $stmt->bindParam(':idEmpresa', $idEmpresa, PDO::PARAM_INT);
            $stmt->bindParam(':numSolicitud', $numSolicitud, PDO::PARAM_INT);
            $stmt->bindParam(':fechaSolicitud', $fechaSolicitud, PDO::PARAM_STR);
            $stmt->bindParam(':idProducto', $idProducto, PDO::PARAM_INT);
            $stmt->bindParam(':MontoPoliza', $montoPoliza, PDO::PARAM_STR);
            $stmt->bindParam(':MontoPago', $montoPago, PDO::PARAM_STR);
            $stmt->bindParam(':idCliente', $idCliente, PDO::PARAM_INT);
            $stmt->bindParam(':idUsuario', $idUsuario, PDO::PARAM_INT);
            $stmt->bindParam(':isDeseaClarin', $isDeseaClarin, PDO::PARAM_BOOL);
            $stmt->bindParam(':isActivo', $isActivo, PDO::PARAM_BOOL);
            $stmt->bindParam(':isCobrado', $isCobrado, PDO::PARAM_BOOL);
            $stmt->bindParam(':isBorrado', $isBorrado, PDO::PARAM_BOOL);

            $stmt->execute();
            
            $this->result = 0;
            $this->errorDesc = "";
            return $idEmpresa."-".$numSolicitud;
            
        } catch (PDOException $e) {
            $this->result = -1;
            $this->errorDesc = $e->getMessage();
            return $this->result;
        }
    }

}

?>